package com.ftg.learn.chapter10.work03;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
import java.util.function.Function;

/**
 * 函数式二
 *   把我们所有同学按照年龄进行排序以后返回
 *   1. comparable  区别 Comparator 叫比较器 比较接口
 *   2. Arrays.sort();
 *
 * @param <T>  任何一个java已知的类、接口、数组
 * @author kangjx
 * @version 1.0
 * @date 2023/2/3 上午8:33
 */
public class Student02<T, R>  {

    public R findDiffAge(T stus, Function<T,R> fn){

        return fn.apply(stus);
    }

    public static void main(String[] args) {
        Student01[] stus = new Student01[3];
        stus[0] = new Student01("张三","男",18);
        stus[1] = new Student01("王二狗","男",22);
        stus[2] = new Student01("李春花","女",1);

        //comparator
//        Arrays.sort(stus); 实现接口，不实现接口只能是支持自然排序
        Arrays.sort(stus,(x,y)->x.getAge()-y.getAge());
        Arrays.sort(stus, Comparator.comparingInt(Student01::getAge));
        Arrays.sort(stus, Student01::abc);



        System.out.println(Arrays.toString(stus));
//
//        Student02<Student01[],int[]> s02 = new Student02();
//
//        s02.findDiffAge(stus,x->{
//            //这个定长数组的长度是几 ....
//            int[] as = new int[x.length];
//            int index = 0;
//            //x 就是Student01
//            for (int i = 0; i < x.length; i++) {
//                //当前这个学生的年龄
//                //循环Student01取出里面的年龄 ，
//                int age = x[i].getAge();
//                //判断年龄是否存在as里面
//                boolean ist = true;
//                if(index ==0){
//                    as[index++] = age;
//                }else{
//                    for(int j = 0 ;j < index;j++){
//                        if(age == as[j]){
//                            ist = false;
//                            break;
//                        }
//                    }
//                    if(ist){
//                        as[index++] = age;
//                    }
//                }
//            }
//            return Arrays.copyOf(as,index);
//        });
    }

}
